import { defineStore } from 'pinia';
import {NaiveUiUtils} from "@/basic/common/naive-ui/utils.ts";
interface Component {
    id: string; // 组件唯一标识
    type: string; // 组件类型（例如按钮、输入框）
    props?: Record<string, any>; // 组件的属性
    events?: Record<string, Function>; // 组件的事件
    style?: Record<string, any>; // 样式
}
interface CurComponent {
    component: Component | null;
    index: number | null;
}
export const useEditorStore = defineStore('editorStore', {
    state: () => ({
        /**
         * 组件列表
         */
        componentList:[] as any[],
        curComponent: {},
        editor: {},
        showRight: false,
        isShowRightList: false,
        clickComponentStatus: false,
        inEditorStatus: false,
        // 根据需要添加其他状态
    }),
    actions: {
        setCurComponent(component: any, index: number | string) {
            this.curComponent = { component, index };
        },
        setShapeStyle(style: any) {
            // 根据您的需求实现
        },
        recordSnapshot() {
            // 实现快照逻辑
        },
        /**
         * 向组件列表添加组件
         * @param component 组件
         * @param index 插入位置
         */
        addComponent(component: any, index?: number) {
            // 检查 component 是否有效
            if (!component) {
                NaiveUiUtils.errorMessage('Invalid component: component cannot be null or undefined')
                return;
            }
            // 如果 index 是合法数字（非负整数），才执行 splice
            if (typeof index === 'number' && Number.isInteger(index) && index >= 0) {
                // 确保 index 不超过数组长度
                const safeIndex = Math.min(index, this.componentList.length);
                this.componentList.splice(safeIndex, 0, component);
            } else {
                // 如果 index 无效，则默认 push 到末尾
                this.componentList.push(component);
            }
        }
    },
});
